<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p>对于数组和对象这样的复杂数据类型，在通过等号拷贝时，有深拷贝和浅拷贝两种情况</p>
    <p>对于简单数据类型，全都是深拷贝</p>

    <script>
        let arr1 = [1,2,3,4];
        // 直接等号赋值 就是浅拷贝  如果修改一个变量，另一个变量也会一起变化，就是浅拷贝
        // 修改一个变量，其他变量不变，那就是深拷贝
        let arr2 = arr1;
        arr1[0] = 999;
        // console.log(arr1, arr2);
        // 浅拷贝的危害：可能会误修改原数据
        // 深拷贝  修改一个数据，其他的数据不受影响
        // ...不是那么靠谱的深拷贝
        let arr3 = [...arr1];
        arr3[0] = 0
        // console.log(arr1, arr2, arr3);
        // 先转字符串再组装成数组
        let arr4 = JSON.parse(JSON.stringify(arr1));
        arr4[0] = 100;
        console.log(arr1, arr2, arr3, arr4);
        // 遍历后存入新的数据
    </script>
</body>
</html>